WINDOW 2," Robert Braunrath presents: Würfelpoker --- This is PD-Enjoy",,0,2
PRINT
LINE (1,1)-(20,10),,bf
PALETTE 3,0.3,0.7,0 'gruen
PALETTE 4,0.8,0,0.53 'rot
DIM a1(36),a2(36),a3(36),a4(36),a5(36),a6(36),score(4,10),feld#(1250),score%(14),nam$(14)
GOSUB Aufbauas
GOSUB aufbau10
GOSUB aufbau9
GOSUB aufbauk
GOSUB aufbaub
GOSUB aufbaud
PRINT:INPUT " Anzahl der Mitspieler (2-4): ",zahl%
CLS
FOR i%=1 TO zahl%
PRINT:PRINT"Spieler " i%;
INPUT": ",spieler$(i%)
NEXT
CLS
LINE (64,16)-(zahl%*64+64,16)
FOR i%=1 TO 6
READ A$:LOCATE i%*2+2,1:PRINT A$
LINE (64,i%*16+16)-(zahl%*64+64,i%*16+16)
NEXT
LINE (5,113)-(zahl%*64+64,113)
FOR i%=1 TO 4
READ A$:LOCATE i%*2+14,1:PRINT A$
LINE (64,i%*16+113)-(zahl%*64+64,i%*16+113)
NEXT
READ A$:LOCATE 24,1:PRINT A$
LINE (64,178)-(zahl%*64+64,178)
LINE (64,194)-(zahl%*64+64,194),2
LINE (64,195)-(zahl%*64+64,195),2
FOR i%=1 TO zahl%+1
LOCATE 2,8*i%+2:PRINT spieler$(i%);
LINE (64+(i%-1)*64,3)-(64+(i%-1)*64,193)
NEXT
DATA " 9"," 10"," B"," D"," K"," As"
DATA " Str"," Full"," Poker"," Gr"," Total"
LINE (400,10)-(400,50)
RANDOMIZE TIMER
FOR i%=1 TO 10
FOR v%=1 TO zahl%
score(v%,i%)=77
NEXT
NEXT
LINE (360,45)-(620,175),0,bf
CIRCLE (490,110),110,3,,,0.5 'Der letzte Wert der Kreisanweisungen muß eventuell geändert werden, um bei jeder Bildschirmeinstellung einen runden Kreis zu erhalten
PAINT (490,110),3
CIRCLE (490,110),110,2,,,0.5
CIRCLE (490,110),130,2,,,0.5
PAINT (610,110),2
GET (380,55)-(600,165),feld#
FOR z%=1 TO 10
FOR v%=1 TO zahl%
COLOR 3,0
LOCATE 2,8*v%+2:PRINT spieler$(v%);
COLOR 1,0
wo%=v%-1:IF v%=1 THEN wo%=zahl%
LOCATE 2,8*wo%+2:PRINT spieler$(wo%);
FOR e%=1 TO 5
weg%(e%)=e%
NEXT
FOR f%=1 TO 3
m%=0
PUT (380,55),feld#,PSET
FOR i%=1 TO 5
s1:
FOR ee%=1 TO 5
IF weg%(ee%)=i% THEN
merk%=1
w%(i%)=INT(RND*6+0.5)
END IF
NEXT
IF w%(i%)=0 THEN GOTO s1
s:
x%(i%)=RND*550
y%(i%)=RND*145
IF x%(i%)<420 OR y%(i%)<75 THEN GOTO s
FOR g%=1 TO i%-1
IF ABS(x%(i%)-x%(g%))<20 AND ABS(y%(i%)-y%(g%))<10 THEN GOTO s
NEXT
IF merk%=1 THEN ON w%(i%) GOSUB Neuner, Zehner, Bube, Dame, Koenig, Ass:m%=m%+1
merk%=0
NEXT
FOR tt%=1 TO 5
weg%(tt%)=0
NEXT
IF f%=3 THEN LOCATE 24,46:PRINT"Was darf`s sein, " spieler$(v%) "?"
IF f%<3 THEN
LOCATE 24,46:PRINT"Was soll wieder in den Becher?";
LOCATE 25,46:PRINT"Nichts ?? => links klicken";
IF f%=2 THEN
IF e%=0 OR e%=5 THEN serv%=1
END IF
e%=0
MOUSE ON
xx%=450
WHILE xx%>400
MOUSE ON
WHILE merkmal%<>1
ON MOUSE GOSUB Maus
WEND
LINE (360,184)-(600,200),0,bf
merkmal%=0
IF xx%>429 AND xx%<571 THEN
e%=e%+1
weg%(e%)=INT((((xx%-400)/30)-0.3)+0.5)
FOR h%=1 TO e%-1
IF weg%(e%)=weg%(h%) THEN
i%=weg%(e%)
merkmal1=1
ON w%(weg%(e%)) GOSUB Neuner, Zehner, Bube, Dame, Koenig, Ass
weg%(e%)=0
e%=e%-1
FOR j%=h% TO e%
weg%(j%)=weg%(j%+1)
NEXT
e%=e%-1:GOTO x
END IF
NEXT
x:
IF merkmal1=0 THEN
LINE (400+weg%(e%)*30,20)-(420+weg%(e%)*30,30),0,bf
LINE (400+weg%(e%)*30,20)-(420+weg%(e%)*30,30),1,B
END IF
merkmal1=0
END IF
WEND
END IF
NEXT
FOR i%=1 TO 6
FOR c%=1 TO 5
IF w%(c%)=i% THEN summe(i%)=summe(i%)+1
NEXT
NEXT
t:
MOUSE ON
WHILE merkmal%<>1
ON MOUSE GOSUB Maus
WEND
merkmal%=0
IF xx%<370 THEN was%=INT((yy%-8)/16+0.5) :ELSE BEEP:GOTO t
IF m%=0 OR m%=5 THEN mm%=5 :ELSE mm%=0
IF score(v%,was%)<>77 THEN BEEP:GOTO t
IF was%<7 THEN
score(v%,was%)=summe(was%)*was%
LOCATE was%*2+2,3+8*v%:PRINT score(v%,was%)
END IF
IF was%>6 THEN GOSUB check
REM ** Full **
IF was%=8 THEN
IF s%=1 AND t%=2 THEN
IF m%=0 AND serv%=1 THEN score(v%,8)=35 :ELSE score(v%,8)=30
IF m%=5 THEN score(v%,8)=35
END IF
IF s%<>1 OR t%<>2 THEN score(v%,8)=0
LOCATE was%*2+2,3+8*v%:PRINT score(v%,was%)
END IF
REM ** Poker **
IF was%=9 THEN
IF s%=4 THEN
IF m%=0 AND serv%=1 THEN score(v%,9)=45 :ELSE score(v%,9)=40
IF m%=5 THEN score(v%,9)=45
END IF
IF s%<>4 THEN score(v%,9)=0
LOCATE was%*2+2,3+8*v%:PRINT score(v%,was%)
END IF
REM ** Grande **
IF was%=10 THEN
IF s%=5 THEN
IF m%=0 AND serv%=1 THEN score(v%,10)=80 :ELSE score(v%,10)=50
IF m%=5 THEN score(v%,10)=80
END IF
IF s%<>5 THEN score(v%,10)=0
LOCATE was%*2+2,3+8*v%:PRINT score(v%,was%)
END IF
REM ** Straße **
IF was%=7 THEN
IF t%=0 AND ABS(summe(1)-summe(6))=1 THEN
IF m%=0 AND serv%=1 THEN score(v%,7)=25 :ELSE score(v%,7)=20
IF m%=5 THEN score(v%,7)=25
END IF
IF t%<>0 THEN score(v%,7)=0
IF ABS(summe(1)-summe(6))<>1 THEN score(v%,7)=0
LOCATE was%*2+2,3+8*v%:PRINT score(v%,was%)
END IF
GOSUB loesch
serv%=0
gesscore(v%)=gesscore(v%)+score(v%,was%)
NEXT
NEXT
COLOR 3,0
max=gesscore(1)
winner%=1
FOR v%=1 TO zahl%
LOCATE 24,3+8*v%:PRINT gesscore(v%)
IF gesscore(v%)>max THEN max=gesscore(v%):winner%=v%
NEXT
LOCATE 24,46:INPUT"Bitte drücken Sie `Return`",t
CLS
COLOR 1,0
PRINT:PRINT:PRINT:PRINT TAB(10) "THE WINNER IS ..............."
LOCATE 20,10:PRINT "Bitte `h` für Speichern der Punkte und Highscores drücken"
COLOR 3,0
WHILE INKEY$<>"h"
COLOR 3,0:LOCATE 7,20:PRINT spieler$(winner%)
COLOR 0,0:LOCATE 7,20:PRINT spieler$(winner%);
SOUND 6000*RND,2
WEND
ON ERROR GOTO Fehler
OPEN "Topscorers" FOR INPUT AS 1
WHILE NOT EOF(1)
in%=in%+1
INPUT #1,score%(in%),nam$(in%)
WEND
FOR ver%=1 TO v%
score%(in%+ver%)=gesscore(ver%)
nam$(in%+ver%)=spieler$(ver%)
NEXT
CLOSE
OPEN "topscorers" FOR OUTPUT AS 1
REM *** Ripple-Sort
scha%=1
WHILE scha%<>0
scha%=0
FOR verg%=1 TO in%+ver%-1
IF score%(verg%)<score%(verg%+1) THEN SWAP score%(verg%),score%(verg%+1):SWAP nam$(verg%),nam$(verg%+1):scha%=1
NEXT
WEND
CLS
PRINT:PRINT
LINE (0,13)-(630,27),2,bf
LINE (0,31)-(630,41),2,bf
COLOR 1,2
PRINT " The Topscorers"
PRINT:PRINT TAB(70) "are:"
FOR sc%=1 TO 70
SCROLL (0,13)-(500,27),3,0
SCROLL (0,32)-(630,40),-4,0
NEXT
PRINT
COLOR 1,0
FOR ver%=1 TO 10
PRINT TAB (20) nam$(ver%),score%(ver%)
WRITE #1,score%(ver%),nam$(ver%)
NEXT
CLOSE
END
Fehler:
ko%=ERR
IF ko%=53 THEN
CLOSE
OPEN "topscorers" FOR OUTPUT AS 1
nam$="---":score%=0
WRITE #1,score%,nam$
CLOSE
END IF
WINDOW 2
RESUME
Aufbauas:
LINE (0,1)-(20,10),2,bf
LINE (0,9)-(20,10),,bf
CIRCLE (20,4),10
PAINT (20,3)
CIRCLE (1,4),10
PAINT (1,5)
LINE (0,0)-(1,1),0,bf:LINE (20,0)-(40,10),0,bf:LINE (0,0)-(1,10),1,bf